home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Metrowerks CodeWarrior / CodeWarrior Pro 4 Release Notes / Libraries Notes / MSL Release Notes / MSL 2.4.8 Release Notes < prev    next >
Encoding:
Text File  |  1998-07-29  |  30.2 KB  |  908 lines  |  [TEXT/CWIE]

  1. ========================================================================
  2. Metrowerks MSL 2.4.8 Pro3 Patch  Release Notes 
  3. ========================================================================
  4.  
  5. Version: Metrowerks CodeWarrior 2.4.8, Pro3 Patch
  6. Date:    July 28, 1998
  7. Authors: Vicki Scott, Michael Marcotty, Matt Fassiotto, Ron Liechty,
  8.          Howard Hinnant 
  9.                   
  10. ========================================================================
  11.  
  12. ========================================================================
  13. New Features in This Version
  14. ========================================================================
  15.  
  16. *  __MSL__ identifier is 0x2408.  This release is known as the Pro3 Patch.
  17.  
  18. *  __MSL_FIX_ITERATORS__ has been removed!  The compiler now fixes
  19.    partial template specializations (be sure and read the compiler
  20.    release notes for restrictions, however).  This means you no longer
  21.    need this hack in your code anymore.  See notes below for how to
  22.    remove this from your code - there is a trick that you have to be 
  23.    aware of.
  24.    
  25. *  <locale> has been completely rewritten to improve speed and size
  26.    of compilation.  See notes below for variances from the Standard.
  27.    
  28. *  slist and hash have been fixed
  29.  
  30. *  auto_ptr is implemented to the Nov 97 Standard now
  31.  
  32. *  <bitset> now uses only one bit per bool instead of one byte
  33.  
  34. *  <algorithm> has been rewritten to fix quite a few bugs and some
  35.    gain in performance and correctness of functions
  36.    
  37. *  mem_fun classes now implemented
  38.  
  39.  
  40. ========================================================================
  41. Reported Bugs From MSL 2.4.6 (MPTP Release) Fixed in This Version
  42. ========================================================================
  43.  
  44. *  Fixed the problem with multiple includes of <cassert> or assert.h 
  45.  
  46. *  Fixed the problem with OLDROUTINENAMES define
  47.  
  48. *  Fixed the problem with std:: in size_t and offsetof macros
  49.  
  50. *  Fixed problem with POSIX definition of fdopen
  51.  
  52. *  Fixed open flags for win32 files to not truncate files when opening 
  53.  
  54. *  Fixed project files for x86 to include the relative path names
  55.  
  56. *  Added the "sys" directory and moved stat.h to it so that x86 files
  57.    who look for <sys\stat.h> can now find it
  58.    
  59. *  Moved stroul syntax and stroud syntax files to a new folder called
  60.    "MSL Technical Notes" and restored their contents (missing since
  61.    Pro 1)
  62.    
  63. *  Fixed SIOUX project files on Mac to not include the prefix file 
  64.  
  65. ========================================================================
  66. Reported Bugs Fixed in This Version
  67. ========================================================================
  68.  
  69. *  MW00042 (Mac)
  70.    The definition of O_RDWR in the ANSI header fcntl.h is now defined as 
  71.    0x01, instead of 0x0. 
  72.                               
  73. *  MW00225 (Mac)
  74.    Fixes the inadvertant release of a shared resource prior to when it 
  75.    should be released.
  76.  
  77. *  MW00288 (x86)
  78.    Fixes a problem with exit code on Windows' platforms. 
  79.  
  80. *  MW00294 (Mac)
  81.    Fixes a problem following aliases
  82.  
  83. *  MW00427 
  84.    Fixes specializations in valarray
  85.  
  86. *  MW00445 (Mac, x86 still needs to be fixed)
  87.    Fixes a problem with trying to seek past EOF
  88.  
  89. *  MW00456 (Mac)
  90.    Fixes a problem with renaming directories
  91.  
  92. *  MW01597 (x86)
  93.    Fixes a problem with renaming "open" to "_open"
  94.  
  95. *  MW01813 (Mac/PPC)
  96.    Fixes a one-off bug in strstr when null is part of the pattern 
  97.  
  98. *  MW02103
  99.    MW06325
  100.    The speed and size requirements (too slow, too big) have been fixed
  101.    in <locale> in the C++ library.  It no longer takes >64K memory nor 
  102.    half and hour to compile locimp.cpp  
  103.  
  104. *  MW02520
  105.    Fixes string I/O alignment in C++ 
  106.    
  107. *  MW02557
  108.    removed the Win32 SDK header x86_prefix.h from MSL.  We now 
  109.    use the one provided with the SDK.
  110.                 
  111. *  MW02625
  112.    Fixes a problem with memchr and __memrchr for characters > 0x80
  113.  
  114. *  MW02733
  115.    Fixes a problem with state bit when fflush is called 
  116.    
  117. *  MW02910
  118.    Fixes character output alignment in C++
  119.  
  120. *  MW03236
  121.    Fixes the search algorithm in <algorithm> to be more efficient 
  122.    
  123. *  MW03272 
  124.    Fixes a bug in fread when a file contains fewer bytes than
  125.    requested
  126.   
  127. *  MW03278 (mac)
  128.    Fixes a cosmetic bug in SIOUX
  129.  
  130. *  MW03295 (mac)
  131.    Fixes a bug in FSp_fopen with _fcreator and _ftype
  132.  
  133. *  MW05946
  134.    Fixes a bug in getting memory for a error warning during 
  135.    an exception
  136.  
  137. *  MW06295
  138.    Fixes bug when trying to print a long long cast to an int
  139.  
  140. *  MW06496
  141.    Fixes a bug with strftime incorrectly returning zero 
  142.  
  143. *  MW06626
  144.    Fixes a bug in setw when temporary string is destructed 
  145.    leaving a dangling pointer
  146.  
  147. *  MW07009 (x86)
  148.    Fixes a bug in WinSIOUX when passing arguments to main 
  149.  
  150. *  MW07031
  151.    Fixes a bug in SIOUX WASTE with data type too small for 
  152.    possible values
  153.    
  154. *  unix headers stat.h/fcntl.h/unistd.h were not including the 
  155.    correct version header file because __dest_os was not defined.
  156.          
  157.    
  158. ==============================================================   
  159. Math bugs fixed in this release
  160. ==============================================================  
  161.  
  162. *  MW01251
  163.    fabs crashes under CFM-68K
  164.    
  165. *  MW01298
  166.    __float_min etc. have been removed from float.c.  Standard 
  167.    constants such as FLT_MI,FLT_MAX are now translated by the 
  168.    compiler at compile time.
  169.    
  170. *  MW02445
  171.    precision of printing doubles was incorrect even when values 
  172.    are exact(eg. ints).  the module ansi_fpx86.obj replaces
  173.    ansi_fp_x86.c on INTEL.
  174.              
  175. *  MW07091
  176.    could not reproduce this, but the implementation of complex 
  177.    log10 was inefficient.  We now multiply by a constant instead
  178.    of a function call/divide.  this should be fixed.
  179.  
  180. *  fmin/fmax/fdim
  181.    now are strictly compliant with C9X
  182.  
  183. *  complex abs/sqrt
  184.    were not working for large values or values near 0.
  185.    using hypot instead of sqrt(x*x + y*y) instead.
  186.     
  187.  
  188. ==============================================================   
  189. The following user reported bugs were fixed in Pro3, but were 
  190. not mentioned in the Pro3 Release Notes:
  191. ==============================================================  
  192.  
  193. *  MW00102
  194.    SIOUXSetTitle
  195.  
  196. *  MW00222
  197.    gratuitous warning messages
  198.    
  199. *  MW00319  
  200.    memory leaks in streams
  201.    
  202. *  MW00376
  203.    exception safe uninitialized_fill
  204.          
  205. *  MW00427
  206.    brain dead valarray 
  207.    
  208. *  MW00451
  209.    string exposed refcounted implementation
  210.      
  211. *  MW00593
  212.    mutable bug in auto_ptr
  213.    
  214. *  MW00622
  215.    sputbackc
  216.   
  217. *  MW00767
  218.    string::operator[] fixed
  219.    
  220. *  MW00805
  221.    exception saftey of entire lib, esp. vector::op=
  222.    
  223. *  MW00827
  224.    explicit facet constructor
  225.    
  226. *  MW01254
  227.    problem with vector.h --> insert
  228.    
  229. *  MW01279
  230.    what() in exception is redeclared 
  231.    
  232. *  MW01300
  233.    mode_t defined twice
  234.    
  235. *  MW01321
  236.    fseek and DOS line endings
  237.  
  238. *  MW02075
  239.    problem with first arg to multimap being const
  240.    
  241. *  MW02345
  242.    better <limits>
  243.       
  244. *  MW02522
  245.    destructor problems for const objects in vector
  246.    
  247. *  MW02531
  248.    string::find
  249.    
  250. *  MW02709
  251.    brain dead valarray
  252.    
  253. *  MW02729
  254.    headers don't pass check syntax
  255.    
  256. *  MW02783
  257.    isnan macro bug 
  258.             
  259. *  MW02789
  260.    more valarray problems fixed
  261.    
  262. *  MW02848
  263.    bug in hash_table::iterator::operator =()
  264.    
  265. *  MW02948
  266.    abs added to cmath    
  267.    
  268. *  MW02949
  269.    missing size() in valarray
  270.       
  271. *  MW02964
  272.    missing wchar functions
  273.    
  274. *  MW03156
  275.    poor bad_alloc design
  276.    
  277. *  MW03455
  278.    missing operator-> on iterators
  279.    
  280. *  MW05605
  281.    incorrect complex::atan2
  282.    
  283. *  MW05846
  284.    printing \r
  285.    
  286. *  MW05968
  287.    problem in map.h trying to access deallocated memory 
  288.    
  289. *  MW06626
  290.    a locale problem
  291.   
  292.      
  293. ========================================================================
  294. Known Bugs and Incompatibilities
  295. ========================================================================
  296.  
  297. *  multibyte routines not implemented - we may have an alpha version 
  298.    ready by Pro4
  299.  
  300. *  wide character support in C++ is unsupported in this release, but it 
  301.    should be ready by Pro4
  302.    
  303. *  MW02614 
  304.    MW02687 
  305.    On 68K for 8-byte doubles, using function pointers to ANSI math 
  306.    functions do not work.  
  307.    
  308. *  MW01261
  309.    Precision of printing doubles is incorrect even when values are 
  310.    exact (e.g., int). 
  311.  
  312. *  MW02521 (mac)
  313.    Conflict with order of includes for Types.h and mcompile.h
  314.  
  315. *  MW02761 (x86)
  316.    Problem with _access if path is a directory
  317.  
  318. *  MW03025 (mac)
  319.    SIOUX WASTE project file needs addition settings to build optimally 
  320.    
  321. *  MW07513
  322.    long double math functions do not work on PPC.  The problem
  323.    is that prototypes instead of macros are in cmath.  We do 
  324.    not support the 128 bit long double data type on the PPC,
  325.    so the return values of these functions are not properly
  326.    coerced into IEEE 64 bit doubles.  a work around is to
  327.    have a macro that maps to the appropriate double version
  328.    of the function(i.e. #define tanl tan).             
  329.              
  330. *  MW02614/MW02687/MW01266 
  331.    on 68K for 8 byte doubles, functions pointers to
  332.    ANSI math functions do not work.
  333.              
  334. *  MW02914/MW06751 
  335.    math.h/fp.h conflicts on 68K when including HyperXcmd.h
  336.    (In general, math.h and fp.h conflict on 68K).  This should
  337.    be fixed in the next drop of Apple's universal headers.
  338.  
  339. *  MW03454/MW05701 
  340.    strtod/sscanf produce results off by a factor of 10 
  341.    on only 68K.
  342.                      
  343. *  MW07337
  344.    feature not yet added. standard api's atof() and sscanf do 
  345.    not yet implement the C9X extension which requires these
  346.    to recognize the strings NAN and INF as input values.
  347.              
  348.  
  349. ========================================================================
  350. Additional Notes
  351. ========================================================================
  352.  
  353. Disclaimer:
  354.  
  355. This library represents a major step forward in providing fully Standard
  356. compliant C and C++ libraries.  We strongly desire to be responsive to
  357. users' requests and needs; however, our position is that we uphold and
  358. implement the Standards behavior in both the C and C++ libraries.  If a
  359. behavior was provided by MSL but goes against the Standard, we reserve
  360. the right to modify the behavior to comply fully with the Standard.  If,
  361. however, a behavior is unspecified or not specifically forbidden by the
  362. Standard, we will continue to support it in the library.  We reserve the 
  363. right to use our discretion in implementing non-standard and 
  364. non-specified C and C++ library behavior.
  365.  
  366. ===================================================================
  367. *  C++ Library Update
  368. ===================================================================
  369.  
  370.  
  371. General Comments
  372. ----------------
  373.  
  374. The battle with overly used inline continues.  Much of the library has
  375. been fixed in this respect, but there is still a ways to go.
  376.  
  377. Fixing the implicit conversion warnings continues.  Much progress
  378. has been made, but there is still more work to do.
  379.  
  380. <algorithm>
  381. -----------
  382.  
  383. The implementation of many methods has been simplified without
  384. changing the actual algorithms used.  Inline depth has been reduced,
  385. and readability increased.
  386.  
  387. Several methods used opertor!= on their template parameters.  This bug
  388. has been corrected to use operator== instead.  Affected methods include:
  389. find, search, search_n, remove_copy and unique_copy.
  390.  
  391. An algorithmic bug was fixed in find_end.
  392.  
  393. Return type of generate_n changed from OutputIterator to void in
  394. compliance with the standard.
  395.  
  396. reverse algorithm changed to that suggested by the standard.
  397.  
  398. Added a random access iterator specialization to partition.
  399.  
  400. Added exception saftey to stable_partition.
  401.  
  402. Rewrote sort to simplify and achieve a 10% to 15% speed increase.
  403.  
  404. Rewrote stable_sort.  It now is exception safe and gets the right
  405. answer.
  406.  
  407. Rewrote the heap functions for a modest performance improvement.
  408.  
  409. <bitset>
  410. --------
  411.  
  412. Rewrote class to only use 1 bit per bool, as opposed to 1 byte as
  413. implemented previously.
  414.  
  415. <fstream>
  416. ---------
  417.  
  418. Minor changes in the construction of the fstream classes which removes
  419. duplicated work, and eliminates a memory leak.
  420.  
  421. <functional>
  422. ------------
  423.  
  424. Simplified implementation of the arithmetic, comparison and logical
  425. operators to increase readability.
  426.  
  427. Rewrote mem_fun classes and functions.
  428.  
  429. <ios>
  430. -----
  431.  
  432. Altered ios_base in such a way that its default constructor does not
  433. touch any memory.  This is key in getting the standard streams (cin,
  434. cout, etc.) to be functional before and after main, and at the same
  435. time, not leak memory.
  436.  
  437. Modified the default constructor of basic_ios for the same reasons as
  438. mentioned above for ios_base.
  439.  
  440. Added a _SaveFlags class that saves the flags of a ios_base.  This is
  441. used in <locale> to temporarily change the flags of a stream in an
  442. exception safe manner.
  443.  
  444. <iostream>
  445. ----------
  446.  
  447. Put the static ios_base::Init object back in this header (it was
  448. moved from here in Pro3).  It was moved out to help stop a memory leak
  449. associated with the standard streams.  The stream classes have been
  450. modified now to not leak, even with the Init object back in this
  451. header.  Having the Init object in this header is key to getting the
  452. standard streams to be functional before and after main.
  453.  
  454. <istream>
  455. ---------
  456.  
  457. Removed #include <extmath.h>.  It was not needed, and was causing a
  458. conflict with assert.
  459.  
  460. A default constructor was added to aid in the construction of the
  461. standard streams in a non-leaking manner.
  462.  
  463. Corrected the basic_istream constructor which takes a streambuf
  464. pointer.  This not only made the class more standard, but corrected a
  465. problem with user-defined classes derived from istream.
  466.  
  467. basic_iostream constructor modifed so that ios_base::init() is called
  468. only once.  This stops a memory leak.
  469.  
  470. <iterator>
  471. ----------
  472.  
  473. Added a standard partial specialization to iterator_traits:
  474. template <class T> struct iterator_traits <const T*>
  475.  
  476. Added the macro #define __MSL_FIX_ITERATORS__(myType) for when
  477. MSIPL_PARTIAL_SPECIALIZATION is defined (partial template
  478. specialization support).  This macro is meant to define away code
  479. which was previously needed to work around lack of partial template
  480. specialization support.  Unfortunately the old __MSL_FIX_ITERATORS__
  481. macro did not include a trailing ';', thus forcing users to add one.
  482. Now when MSIPL_PARTIAL_SPECIALIZATION is turned on, the trailing ';'
  483. that users had to add will still be there, possibly in a place that
  484. the compiler doesn't appreciate.  Such ';' must be manually deleted
  485. by the user at each use.  The version of the  __MSL_FIX_ITERATORS__
  486. macro that is active when MSIPL_PARTIAL_SPECIALIZATION is not defined
  487. has been modified to include the trailing ';'.  Thus, once the user
  488. removes the trailing ';' from each use of the __MSL_FIX_ITERATORS__
  489. macro, MSIPL_PARTIAL_SPECIALIZATION can be turned on and off with
  490. ease.  Sorry for the inconvenience.
  491.  
  492. To summarize, in your code change
  493. __MSL_FIX_ITERATORS__(MyClass);
  494. to
  495. __MSL_FIX_ITERATORS__(MyClass)
  496.  
  497. This macro will not be required for your classes with partial template
  498. compiler support.  At the time of this writing, it is not certain if
  499. new compilers will be released simultaneously with this library.
  500.  
  501. The distance() method has been simplified.
  502.  
  503. reverse_iterator was rewritten without mutex.  mutex is too expensive
  504. to burden such a light weight object with.  reverse_iterators passed
  505. by value to multiple threads will maintain their integrity.  However,
  506. the object that they refer to will have to be properly mutex'ed by the
  507. user.  This design insures that you only pay for mutex when you need
  508. it.
  509.  
  510. Rewrote istream_iterator for several reasons:  1.  It mistakenly
  511. referred to cin.  2.  It had a mutex object.  3.  It had a bool data
  512. member that was unnecessary (this should be a very light weight
  513. object).
  514.  
  515. Removed copy constructor and destructor from ostream_iterator.  The
  516. compiler generated versions work just fine, and the result is a class
  517. that the compiler has an easier time inlining.
  518.  
  519. Rewrote istreambuf_iterator for modest performance gains.
  520.  
  521. <limits>
  522. --------
  523.  
  524. Changed #include <wchar.h> to <cwchar>.  Silly bug!
  525.  
  526. Removed previous implementation which was in comments.
  527.  
  528. <locale>
  529. --------
  530.  
  531. Rewrote.  The new version fixes many bugs.  Most notably, the C++
  532. library will now compile with much less ram and cpu.
  533.  
  534. There is a performance / functionality tradeoff that can be controlled
  535. by the user via #define flags in <mcompile.h>.  The tradeoff stems
  536. from the fact that most of the code in <locale> lives under templated
  537. virtual methods.  With current compiler technology, templates with
  538. virtual methods are completely instantiated if an instance of that
  539. class template is constructed.  This adds up to a lot of code that is
  540. instantiated, but will often never be used.
  541.  
  542. Metrowerks is working on both library and compiler technology to
  543. optimize away this problem.  In the mean-time we offer some low-tech
  544. options to save both code size, and library compile time:
  545.  
  546. The virtual key word can be easily turned on and off for each
  547. individual facet class in <locale>.  When all facets have virtual
  548. methods, this is standard.  Turning off the virtualness of a facet's
  549. methods means that you will not be able to derive from a facet and
  550. thus alter I/O behavior.
  551.  
  552. There is a group of facets that have "punct" in their name:
  553. numpunct, moneypunct, and timepunct (timepunct is non-standard).
  554. These facets are very small (in code), but offer tremendous
  555. flexibility in the custimization of I/O.  With these classes one can
  556. alter the placment of commas for grouping digits (thousands
  557. seperators), or even change what character is used.  The decimal point
  558. character can also be modified.  Even the character strings that
  559. represent true and false can be changed.
  560.  
  561. A good performance / functionality tradeoff is to make only the
  562. "punct" facets virtual.  This can easily be done by
  563.     #define _ONLY_VIRTUAL_PUNCTS
  564. in <mcompile.h>.  In fact this is the default state of the C++ libs
  565. that we will ship.
  566.  
  567. Also in <mcompile.h> you will notice two other
  568. flags that are commented out:
  569. //    #define _NO_VIRTUAL_FACETS
  570. //    #define _CUSTOM_VIRTUAL_FACETS
  571.  
  572. If you wish no facets to have virtual methods, then comment out
  573. _ONLY_VIRTUAL_PUNCTS, and uncomment _NO_VIRTUAL_FACETS.
  574.  
  575. If you with to define precisely which facets have virtual methods then
  576. use the _CUSTOM_VIRTUAL_FACETS flag, and then modify <locale> at line
  577. 71 to specify which facets you want virtual methods turned off.  The
  578. macro magic there ought to be clear for those wishing to travel down
  579. this road.
  580.  
  581. For a completely standard lib (all facets have virtual methods) then
  582. comment out all three flags (_ONLY_VIRTUAL_PUNCTS, _NO_VIRTUAL_FACETS
  583. and _CUSTOM_VIRTUAL_FACETS) in <mcompile.h>.
  584.  
  585. As mentioned above, a non-standard class has been added:
  586.  
  587. template <class charT>
  588. class timepunct
  589.     : public locale::facet
  590. {
  591. public:
  592.     explicit timepunct(size_t refs = 0);
  593.     const charT* weekday_name(size_t d) const;
  594.     const charT* month_name(size_t m) const;
  595.     const charT* am_pm(int hour) const;
  596. protected:
  597.     timepunct();
  598.     virtual const charT* do_weekday_name(size_t d) const;
  599.     virtual const charT* do_month_name(size_t m) const;
  600.     virtual const charT* do_am_pm(int hour) const;
  601. };
  602.  
  603. This class can be overridden so that the standard time_put and
  604. time_get work with user defined character strings to represent the
  605. names of the months (which default to "January", "February", ...),
  606. the days of the week (which default to "Sunday", "Monday", ...), and
  607. the am/pm designator (which defaults to "am", "pm").
  608.  
  609. To create your own timepunct class you must derive it from
  610. std::template <class charT> class _Generic_timepunct.  I reccommend
  611. that you copy the implementation for template <> class
  612. timepunct<char>.
  613.  
  614. <mcompile.h>
  615. ------------
  616.  
  617. In addition to the flags mentioned under locale section, the flag
  618. MSIPL_PARTIAL_SPECIALIZATION has been added.  This flag controls
  619. whether or not the library is expecting the compiler to support
  620. partial template specialization.
  621.  
  622. The flag _WIN32 has been added to the Windows platform.
  623.  
  624. The macro MSIPLSTD was changed from std to  ::std.
  625.  
  626. <memory>
  627. --------
  628.  
  629. get_temporary_buffer was rewritten.  It used to use a preallocated
  630. buffer when the size of the requested memory was small enough.  This
  631. has been changed to just use new because of concerns in a multi-
  632. threaded environment.
  633.  
  634. A non-standard class has been added: template <class T> class _TempVec.
  635. This creates an array of T by using get_temporary_buffer, and
  636. initializes it with a user supplied value.  The for reason this class is
  637. to facilitate the use of get_temporary_buffer in an exception-safe
  638. manner.  This class is used in <algorithm>.
  639.  
  640. There is a new auto_ptr in the Nov' 97 standard (which unfortunately
  641. is not public).  The best public information I know of on this subject
  642. can be found at http://www.dejanews.com/ (search for auto_ptr).  The
  643. main change in auto_ptr is that when the class relenquishes ownership
  644. of its pointer, it sets itself to null.  The Dec. '96 auto_ptr has
  645. been left in <memory>, but commented out.  If you require the '96
  646. behavior, then simply comment out the '97 version, and uncomment the
  647. '96 version.
  648.  
  649. <new>
  650. -----
  651.  
  652. References to DebugNew have been deleted.  This does not imply a lack
  653. of support for this utility.  Indeed, look forward to increased
  654. support in this area!
  655.  
  656. <ostream>
  657. ---------
  658.  
  659. A default constructor was added to aid in the construction of the
  660. standard streams in a non-leaking manner.
  661.  
  662. Corrected the basic_istream constructor which takes a streambuf
  663. pointer.  This not only made the class more standard, but corrected a
  664. problem with user-defined classes derived from istream.
  665.  
  666. Formatting of char output has been corrected (now obeys width and
  667. justification).
  668.  
  669. Output of char* has been rewritten to take advantage of the new
  670. locale.  There is however, no change in functionality.
  671.  
  672. The exception behavior of the formatted output operators has been
  673. modified.  Unfortunately a bug still lurks here.  If an exception is
  674. thrown, then the method should set badbit and rethrow the exception.
  675. Instead, badbit is left unset.  This is a known bug and will be fixed
  676. in the next release.
  677.  
  678. <string>
  679. --------
  680.  
  681. Fixed a bug in char_traits<char>::find related to char's greater than
  682. 127.
  683.  
  684. Removed default argument from
  685. iterator string::insert(iterator, char)
  686. per the standard.
  687.  
  688. Changed string output to respect stream width and justification.
  689. This is non-standard behavior, but I believe that the standard is in
  690. error (a type-o of a single word: smaller was written when larger meant).
  691. If the standard is strictly interpreted, then os << string;
  692. should produce no output at all!  (That is, for the common case of
  693. os.width() == 0).
  694.  
  695. <vector>
  696. --------
  697.  
  698. Reduced inline depth of serveral iterator operations.
  699.  
  700.  
  701. ===================================================================
  702. *  MSL C Source File Updates 
  703. ===================================================================
  704.  
  705.  
  706. *  ansi_parms.h 
  707.    C compiler flags have moved from <ansi_parms.h> to 
  708.    <ansi_prefix.xxx.h>, where xxx is mac or Win32.
  709.  
  710. *  file_io.mac.c
  711.    path2fss.c
  712.    Changes to allow the renaming of directories. MW00456
  713.  
  714. *  scanf.c
  715.    Modification to allow characters >= 128, e.g. fl or ä to be matched 
  716.    from format string correctly. MW06720
  717.  
  718. *  SIOUX.c
  719.    Fix to insert linefeed to make the sequence \b\n work correctly.
  720.  
  721.    Fix the enter key work as return on input from keyboards where 
  722.    the virtual key code is 0x34 as well for keyboards with an enter 
  723.    key virtual key code of 0x4c. MW06775
  724.  
  725. *  SIOUXWindows.c
  726.    Removed two ReleaseResource statements that released a shared 
  727.    resource, causing possible crashes in other applications. MW00225
  728.  
  729. *  fcntl.mac.h
  730.    fcntl.mac.c
  731.    fcntl.win32.h
  732.    Changes to the value of O_RDWR so that it has a non-zero value.  
  733.    MW00042.
  734.  
  735. *  unistd.mac.c
  736.    Fix to lseek for case where it is used to seek beyond EOF to 
  737.    extend the file.  MW00445  (I don't believe lseek implemented 
  738.    on Windows yet.)
  739.  
  740. *  file_io.mac.c
  741.    Change to allow an alias file name to be resolved.  MW00294
  742.  
  743. *  mem.c
  744.    Change to allow memchr to work on the PPC for characters of 
  745.    value > 127.  MW02625
  746.  
  747. *  console_io.mac.c
  748.    SIOUX.h
  749.    SIOUX.c
  750.    Changes to implement clrscr, for which there was a declaration 
  751.    in console.h but no code.
  752.  
  753. *  ansi_files.c
  754.    Change to allow error-free linking in case where _No_Console is 
  755.    defined.  MW07076, MW06847
  756.  
  757. *  file_io.c
  758.    The C Standard does not specify any action for fflush() on a 
  759.    stream opened for read only.  As it stood, our implementation  
  760.    caused the buffer to be reloaded.  This change turns fflush()
  761.    into a no-op if the file is opened for read.  MW02733
  762.  
  763. *  time.c
  764.    Corrected strftime to return the correct number of characters 
  765.    written and make proper check to avoid target string overrun. 
  766.    MW06496
  767.  
  768. *  SIOUXGlobals.c
  769.    SIOUXGlobals.h
  770.    Changes to make SIOUX_WASTE work properly for files greater 
  771.    than 32k.  MW07031
  772.  
  773. *  utime.win32.h
  774.    Change to reintroduce #include <winsock.h> eliminated earlier. 
  775.    This include is required and has been requested again from a 
  776.    user.  However, this leads to redeclaration warning messages 
  777.    during the building of the library due to the way that the 
  778.    Microsoft headers (which we can't change) have been written. 
  779.  
  780. *  fcntl.win32.h
  781.    fnctl.win32.c
  782.    Changes to remove #defines of open, creat, fcntl to _open, 
  783.    _creat, and _fcntl.
  784.  
  785. *  unistd.win32.h
  786.    unistd.win32.c
  787.   Changes to revert _lseek, _read, _write, _access, _close, 
  788.   _unlink, _rmdir, _chdir, _getcwd to lseek, read, write, access, 
  789.   close etc. while accommodating legacy code.
  790.  
  791.  
  792. ===================================================================
  793. *  WinSIOUX in MSL 2.4 (Pro 3), Updates for Pro3 Patch
  794. ===================================================================
  795.  
  796.    The Mac SIOUX-like project is now available for Windows.  This means 
  797.    that a new console window for WIN32 applications is available that 
  798.    permitssaving stdout to a file, printing it from a menu option, and 
  799.    includes ascroll bar.  A new stationary on the windows platforms is 
  800.    included, named WinSIOUX.  You will not get the standard DOS/NT console 
  801.    if you use this stationary.  The remaining functions from SIOUX will be 
  802.    included in future releases (for example, cut and paste, selecting font, 
  803.    and opening/closing files from the menu).
  804.    
  805.    The following has been added to the Pro3 Patch:
  806.    
  807. *  The addition of an Edit Menu with active items of Copy, Cut
  808.    Paste and Select All.
  809.     
  810. *  Keyboard shortcuts for menu items.  Note that, during keyboard
  811.    input to stdin or cin, the keyboard shortcuts are not available
  812.    and the corresponding menu items must be used.
  813.  
  814. *  Caret control both through the keyboard (arrow keys) and the
  815.    mouse.
  816.     
  817. *  The ability to select parts of the file with the mouse.
  818.  
  819. *  The ability to print just specific pages selected during the
  820.    print dialog.
  821.     
  822. *  During keyboard input to stdin or cin, ctrl+D and ctrl+Z both
  823.    serve as end-of-file markers.  There is no way to clear this
  824.    marker once it has been set.
  825.     
  826. *  While the program is running, Ctrl-C acts as a keyboard interrupt
  827.    that can be handled by a user specified handler.  If no handler is
  828.    provided by the user, the default handler will terminate the program.
  829.    When there parts of the file have been selected as under 4 above, 
  830.    Ctrl-C still acts as a keyboard shortcut for Copy.
  831.     
  832. *  Added proper handling of argv and argc variable length argument
  833.    lists.
  834.     
  835. *  The size of the console window can now be adjusted with the mouse in
  836.    the bottom right corner and the display of long lines of text will be
  837.    adjusted accordingly.
  838.  
  839.    
  840.  
  841. ===================================================================   
  842. Miscellaneous Notes
  843. ===================================================================
  844.  
  845. *  Precompiled header stationary sets precompiled headers to 4i-8d.  
  846.    When using precompiled headers built from the stationary, please 
  847.    ensure that the libraries you include in your project are also 4i-8d. 
  848.    If changing the precompiled headers preferences panels, please ensure 
  849.    that you build the associated libraries you plan to use with the same 
  850.    options.  A "#pragma check_header_flags" has been added to MSL.pch++ 
  851.    to help check for these types of errors. 
  852.    
  853. *  Improved clock for Mac platforms
  854.    To increase the tick count for the Mac platforms in order to use the 
  855.    facilities the Operating System provides, please change the following 
  856.    file:  
  857.        Metrowerks Standard Library/MSL C/MSL Mac/Public Includes/
  858.               timesize.mac.h
  859.    This file introduces a define (__TIMESIZE_DOUBLE) which enables the 
  860.    improved clock code in time.h and time.mac.c.  Please note that the 
  861.    clock_t typedef will change from an unsigned long to a type double. 
  862.    This also means that the clock function will change types.  Be sure 
  863.    you confirm in your code base that your return values are typed 
  864.    accordingly for clock and clock_t.
  865.    
  866. *  Multi-target project files.  You will see new project files with the 
  867.    string MTrg included in the project name.  This means that the project 
  868.    file can emit all targets from that single file, depending on your 
  869.    selection when you open the project file and choose a target.  However, 
  870.    it takes more time to open the multi-target project files.  This was
  871.    done for the windows platforms because scripting is not available in
  872.    the IDE on windows. 
  873.  
  874. *  Console applications for windows projects now stop before exiting so 
  875.    that output can be viewed.  This feature can be turned off by setting 
  876.    the preprocessor macro STOP_PROGRAM_BEFORE_EXIT in the windows 
  877.    prefix file, ansi_prefix.win32.h.  Be sure to rebuild MSL C after 
  878.    making this change.  Please note that if you redirect output to a 
  879.    serial device (such as a printer), you must still press enter to  
  880.    exit the program. 
  881.    
  882. *  There is a vbscript script in the "Metrowerks Standard Library" 
  883.    directory that rebuilds the precompiled header files, the win32 
  884.    runtime, and all MSL libraries.  Read the information at the top of 
  885.    the script file "msl_build.vbs" if you have problems running the 
  886.    script.  The file "msl_list" in the same directory can be configured 
  887.    to build exactly those libraries you wish to build.  If errors occur 
  888.    while building, they are logged in the file "error.log" in the 
  889.    "Metrowerks Standard Library" directory. 
  890.  
  891.  
  892. ========================================================================
  893. Contacting Metrowerks
  894. ========================================================================
  895.  
  896. For bug reports, technical questions, and suggestions, please use the
  897. forms in the Release Notes folder on the CD, and send them to
  898.  
  899. support@metrowerks.com
  900.  
  901. See the CodeWarrior on the Nets document in the Release Notes folder for
  902. more contact information, including a list of Internet newsgroups, 
  903. online services, and patch and update sites.
  904.  
  905. ========================================================================
  906.  
  907. Metrowerks Corporation
  908.